package cn.itcast.vo;

import lombok.Getter;
import lombok.Setter;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;

@Setter
@Getter
public class PageBean {
    //    1、当前页码
    private int pageNum;
    //    2、每页显示条数
    private int pageSize;
    //    3、每页的数据
    private List list;
    //    4、总条数
    private Long total;
    //    5、总页数
    private int pages;
    //   6、上一页
    private int prePage;
    //    7、下一页
    private int nextPage;
    //    8、起始页码
    private int navigateFirstPage;
    //    9、结束页码
    private int navigateLastPage;

//    1、页面上直接传入的   当前页码：pageNum  每页显示条数：pageSize
//    2、需要从数据库中查询的  当前页数据：list  总条数total
//    3、通过逻辑计算获取的 总页数：pages  上一页：prePage  下一页：nextPage
//                           起始页码：navigateFirstPage  结束页码：navigateLastPage

    public PageBean(int pageNum,int pageSize,List list,Long total){
        this.pageNum=pageNum;
        this.pageSize=pageSize;
        this.list=list;
        this.total=total;
//        总页数：pages     举例：每页显示3条数据  总共有10条数据 分成4页
        if(total%pageSize==0){ //整除
          this.pages= (int) (total/pageSize);
        }else{
          this.pages=((int)(total/pageSize))+1;
        }

//        上一页：
        if(pageNum<=1){
            this.prePage = pageNum;
        }else{
            this.prePage = pageNum-1;  //pageNum是大于1的情况
        }
//        下一页
        if(pageNum>=pages){
            this.nextPage = pageNum;
        }else{
            this.nextPage = pageNum+1;//pageNum是不大于总页数的情况
        }

//        基本的需求：如果总页数超过5，那么页面上始终显示5个页码
//        起始页码：navigateFirstPage  结束页码：navigateLastPage

//        总页数如果小于等于5
        if(pages<=5){
          this.navigateFirstPage=1;
          this.navigateLastPage=pages;
        }else{
//            情况一：当前页码<=3
            if(this.pageNum<=3){
                this.navigateFirstPage=1;
                this.navigateLastPage=5;
            }else if((this.pageNum+2)>=pages){
//                情况二：当前页码+2>=总页数
                this.navigateFirstPage=pages-4;
                this.navigateLastPage=pages;
            }else{
                //            情况三： 起始页码=当前页-2  结束页码=当前页+2
                this.navigateFirstPage=pageNum-2;
                this.navigateLastPage=pageNum+2;
            }
        }
    }



}
